//============================================================================
// Name        : tp2.cpp
// Author      : jk, as, md
// Version     :
// Copyright   :
// Description :
//============================================================================

#include <iostream>
#include <fstream>
#include "espionaje.h"
#include "localizador.h"
#include "disparar.h"
using namespace std;

int main(int argc, char* argv [])
{
	Espionaje espia(argv[1],argv[2]);
	int dimension = espia.getDimension();
	Matriz *enemigo = new Matriz(dimension,dimension);
	Matriz *impacto = new Matriz(dimension,1);
	Matriz *sol = new Matriz(dimension,1);
	Matriz *nueva = new Matriz(dimension,dimension);

	Localizador localizar;
	Disparar disparo(dimension,espia.getPosicionNuestra());
	if(espia.getTurno()==0)
	{
		disparo.getPrimerDisparo(sol);
		disparo.getPrimerTransformacion(nueva);
		espia.setDisparo(sol);
		espia.setTransformacion(nueva);
	}
	else
	{
		impacto = espia.getPosicionImpacto();
		enemigo = espia.getMatrizEnemigo();
		localizar.getPosicionObjetivo(*impacto,*enemigo,*sol);
		disparo.getTransformacion(sol,nueva);
		espia.setDisparo(sol);
		espia.setTransformacion(nueva);
	}

    fstream info;
	info.open(INFO,ios::out | ios::app);
	info<<espia.getTurno()<<endl;
	for(Tam i=1;i<=nueva->cantidadDeFilas();i++)
	{
	    for(Tam j=1;j<=nueva->cantidadDeColumnas();j++)
	    {
            info<<nueva->get(i,j);
            info<<' ';
	    }
            info<<';'<<endl;
	}

    for(Tam j=1;j<=sol->cantidadDeFilas();j++)
	{
		info<<sol->get(j,1);
		info<<' ';
	}
	info<<endl;

	info.close();

	espia.escribirDisparo();

	delete sol;
	delete impacto;
	delete enemigo;

	return 0;
}
